import { Controller, Get, Post, Body, Patch, Param, Delete, Query, Sse, MessageEvent } from "@nestjs/common";
import { DeviceService } from "./device.service";
import { Observable, interval, map } from "rxjs";

@Controller("device")
export class DeviceController {
  constructor(private readonly deviceService: DeviceService) {}

  // ! 一定要记住 @Sse 其实是get请求 千万不能放到 :id 后面 不然会直接走 @Get(:id) 里面去
  @Sse("sse")
  sse(@Query() query): Observable<MessageEvent> {
    console.log("🚀 ~ sse ~ query:", query) // 只能params传参
    return interval(1000).pipe(map(num => ({ data: "我是玄之又玄的胖虎" + num })));
  }
  // 创建设备数据
  @Post()
  create(@Body() body) {
    return this.deviceService.create(body);
  }
  // 获取全部设备数据
  @Get()
  findAll(@Query() query) {
    // 可以使用内置管道设置默认值和转数字之类的 比如pageNum pageSize
    return this.deviceService.findAll(query);
  }
  // 获取单个设备数据
  @Get(":id")
  findOne(@Param("id") id: string) {
    return this.deviceService.findOne(id);
  }
  // 修改单个设备数据
  @Patch()
  update(@Body() body) {
    return this.deviceService.update(body);
  }
  // 删除单个设备数据
  @Delete(":id")
  removeOne(@Param("id") id: string) {
    return this.deviceService.removeOne(id);
  }
  // 删除多个设备数据
  @Delete()
  removeMany(@Body("ids") ids: string[]) {
    return this.deviceService.removeMany(ids);
  }
}
